
// IP白名单验证函数
export function validateIpWhiteList(rule, value, callback) {
  // 如果为空字符串，则通过验证
  if (!value || value.trim() === '') {
    callback();
    return;
  }

  // 检查是否以逗号开头或结尾
  if (value.startsWith(',') || value.endsWith(',')) {
    callback(new Error('IP地址不能以逗号开头或结尾'));
    return;
  }

  // 分割IP地址
  const ips = value.split(',').map(ip => ip.trim()).filter(ip => ip !== '');

  // 如果分割后没有有效的IP地址
  if (ips.length === 0) {
    callback(new Error('请输入有效的IP地址'));
    return;
  }

  // IP地址正则表达式
  const ipRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;

  // 验证每个IP地址
  for (const ip of ips) {
    if (!ipRegex.test(ip)) {
      callback(new Error('请输入正确的IP地址格式，多个IP用逗号分隔'));
      return;
    }
  }

  callback();
};

// 表单验证规则（限流字段可空，但若填写需为正整数）
export const positiveIntegerRule = { pattern: /^[1-9]\d*$/, message: '请输入正整数', trigger: ['blur', 'change'] };

// 邮箱验证规则
export const emailRule = { pattern: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/, message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] };

// 手机号验证规则
export const phoneNumRule = { pattern: /^1[3-9]\d{9}$/, message: '请输入正确的手机号', trigger: ['blur', 'change'] };


export function validateForm(formRef) {
  return new Promise((resolve, reject) => {
    formRef.validate((valid) => {
      if (valid) {
        resolve();
      } else {
        reject(new Error('表单验证失败'));
      }
    });
  });
}